package s2elinshu;

public interface J16Interface {
	// interface라는 예약어로 만듬
	// 멤버는 추상 메소드와 상수만으로 구성

	// abstract private String a;
	// interface는 private로 쓰면 오류가 생김
	// 사용자, 제공자 간 약속이기에 누구나 다 볼 수 있어야 함

	// interface는 반드시 public만 허용 됨.
	// static final만 허용 됨.

	// 변수선언 규칙(반드시 상수).
	// static은 단 하나의 값만 가지게...
	// final은 값을 함부로 바꾸지 못 하게 하기 위해서 사용.
	public static final String a = "";

	// 메서드 선언 규칙(몸체{}는 제외).
	// 몸체가 없는 메서드를 추상 메서드라 함.
	// interface에 추상메서드를 정의할 때
	// abstract는 생략 가능
	abstract public int b();
	public int c();

} // public interface J16Interface

class J16Implements implements J16Interface {
	// 불완전한 메소드를 상속받아서 완전하게 만들어야 함
	// interface는 클래스로 구현해야만 객체로 사용 가능(인터페이스는 객체로 생성할 수 없기에.)
	// interface는 다중 상속 가능
	// ****************interface도 참조변수처럼 사용 가능함.
	// 다중 상속이 가능하며, 하나 이상의 경우','로 구분짓는다
	@Override
	public int b() {return 0;}

	@Override
	public int c() {return 0;}

	
	
} // class J16implements

